home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Garbo
/
Garbo.cdr
/
mac
/
cdev
/
sludge.sit
/
Source Code
/
Parasite_Manager.c
< prev
next >
Wrap
Text File
|
1999-10-07
|
7KB
|
141 lines
/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
Ñ Ñ
Ñ File Name: Parasite_Manager.c Ñ
Ñ ---------- Ñ
Ñ Ñ
Ñ Copyright ⌐ 1990 Apple Computer, Inc. All Rights Reserved Ñ
Ñ Ñ
Ñ Description Ñ
Ñ ----------- Ñ
Ñ This file contains the routines of the parasite manager. Ñ
Ñ The parasite manager will install and remove the SLUDGE parasite. Ñ
Ñ The SLUDGE parasite is what slows down the machine. Ñ
Ñ Ñ
Ñ History Ñ
Ñ ------- Ñ
Ñ Ñ
Ñ Author Date Description Ñ
Ñ ------------------------------------------------------------------ Ñ
Ñ Kevin McEntee 2/20/90 Original Implementation Ñ
Ñ Ñ
Ñ Ñ
ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
#include <OSUtils.h>
#include <Resources.h>
#include <Memory.h>
#include "Parasite_Manager.h"
#include "State_Storage_Manager.h"
void TRY(Ptr Parasite_Location, long Sludge_Factor);
/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
Ñ Ñ
Ñ Identifier: Install Ñ
Ñ ----------- Ñ
Ñ Ñ
Ñ Description Ñ
Ñ ----------- Ñ
Ñ This function installs the SLUDGE parasite and makes it active. Ñ
Ñ Ñ
Ñ History Ñ
Ñ ------- Ñ
Ñ Ñ
Ñ Author Date Description Ñ
Ñ ------------------------------------------------------------------ Ñ
Ñ Kevin McEntee 2/20/90 Original Implementation Ñ
Ñ Ñ
Ñ Ñ
ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
void Install(Handle cdevStorage, long Sludge_Factor)
{
Handle SLUDGE_parasite;
short rvalue;
Handle a_trap_vector_address = 0x28;
Handle jt_vector_address = 0x24;
/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
Ñ Ñ
Ñ Save the values of the Jump_Trace Ñ
Ñ a-trap exception vectors. Ñ
Ñ Ñ
ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
Set_Original_A_TRAP_Exception_Vector_Value(cdevStorage, *a_trap_vector_address);
Set_Original_JUMP_TRACE_Exception_Vector_Value(cdevStorage, *jt_vector_address);
/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
Ñ Ñ
Ñ Load the parasite resource. Ñ
Ñ Ñ
ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
SLUDGE_parasite = GetResource('NUGG',0);
rvalue = ResError();
if (rvalue != 0)
DebugStr("\pGetResource Failed");
DetachResource(SLUDGE_parasite);
rvalue = ResError();
if (rvalue != 0)
DebugStr("\pDetachResource Failed");
HLock(SLUDGE_parasite);
Set_Location_Of_Parasite_Resource(cdevStorage, SLUDGE_parasite);
/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
Ñ Ñ
Ñ Activate the parasite. Ñ
Ñ Ñ
ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
TRY(*SLUDGE_parasite, Sludge_Factor);
}
#include <OSUtils.h>
void CLEAR_JUMP_TRACE_BIT();
/*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
Ñ Ñ
Ñ Identifier: remove Ñ
Ñ ----------- Ñ
Ñ Ñ
Ñ Description Ñ
Ñ ----------- Ñ
Ñ This function makes the SLUDGE parasite inactive and removes it. Ñ
Ñ Ñ
Ñ History Ñ
Ñ ------- Ñ
Ñ Ñ
Ñ Author Date Description Ñ
Ñ ------------------------------------------------------------------ Ñ
Ñ Kevin McEntee 2/20/90 Original Implementation Ñ
Ñ Ñ
Ñ Ñ
ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
void remove(Handle cdevStorage)
{
Handle SLUDGE_parasite;
Handle a_trap_vector_address = 0x28;
Handle jt_vector_address = 0x24;
CLEAR_JUMP_TRACE_BIT();
*a_trap_vector_address = Get_Original_A_TRAP_Exception_Vector_Value(cdevStorage);
*jt_vector_address = Get_Original_JUMP_TRACE_Exception_Vector_Value(cdevStorage);
SLUDGE_parasite = Get_Location_Of_Parasite_Resource(cdevStorage);
HUnlock(SLUDGE_parasite);
DisposHandle(SLUDGE_parasite);
}